<?php
require_once 'Locale.class.php';

/**
 * This class has the locale for all countrys.
 * Was used the site <code>http://www.timeanddate.com</code> to get the information.
 * @author tiago.professor@gmail.com
 */
class LocaleFactory extends AbstractFactory {

	/**
	 * Method factory to create an specifc Locale
	 * @param $localeName Example: 'pt_BR'
	 */
	public static function createLocale($localeName){
		$locale = null;
		switch ($localeName) {
			case 'es_AR'://Argentina
				$locale = new Locale(ILocale::GMT_TIME_ES_AR, true);
				break;
			case 'pt_BR'://Brasil
				$locale = new Locale(ILocale::GMT_TIME_PT_BR, true);
				break;
			case 'es_BO'://Bolivia
				$locale = new Locale(ILocale::GMT_TIME_ES_BO, true);
				break;
			case 'es_CL'://Chile
				$locale = new Locale(ILocale::GMT_TIME_ES_CL, true);
				break;
			case 'zh_CN'://China
				$locale = new Locale(ILocale::GMT_TIME_ZH_TW);
				break;
			case 'es_CO'://Colombia
				$locale = new Locale(ILocale::GMT_TIME_ES_CO, true);
				break;
			case 'es_CR'://Costa Rica
				$locale = new Locale(ILocale::GMT_TIME_ES_CR, true);
				break;
			case 'de_DE'://Alemanha
				$locale = new Locale(ILocale::GMT_TIME_DE_DE);
				break;
			case 'fr_FR'://França
				$locale = new Locale(ILocale::GMT_TIME_FR_FR);
				break;
			case 'es_SV'://El Salvador
				$locale = new Locale(ILocale::GMT_TIME_ES_SV, true);
				break;
			case 'es_EC'://Equador
				$locale = new Locale(ILocale::GMT_TIME_ES_EC, true);
				break;
			case 'es_ES'://España
				$locale = new Locale(ILocale::GMT_TIME_ES_ES);
				break;
			case 'es_GT'://Guatemala
				$locale = new Locale(ILocale::GMT_TIME_ES_GT, true);
				break;
			case 'es_HN'://Honduras
				$locale = new Locale(ILocale::GMT_TIME_ES_HN, true);
				break;
			case 'hi_IN'://India
				$locale = new Locale(ILocale::GMT_TIME_HI_IN);
				break;
			case 'it_IT'://Italia
				$locale = new Locale(ILocale::GMT_TIME_IT_IT);
				break;
			case 'ja_JP'://Japao
				$locale = new Locale(ILocale::GMT_TIME_JA_JP);
				break;
			case 'ko_KR'://Koreia
				$locale = new Locale(ILocale::GMT_TIME_KO_KR);
				break;
			case 'es_MX'://México
				$locale = new Locale(ILocale::GMT_TIME_ES_MX, true);
				break;
			case 'es_PA'://Panamá
				$locale = new Locale(ILocale::GMT_TIME_ES_PA, true);
				break;
			case 'es_PY'://Paraguay
				$locale = new Locale(ILocale::GMT_TIME_ES_PY, true);
				break;
			case 'es_PE'://Peru
				$locale = new Locale(ILocale::GMT_TIME_ES_PE, true);
				break;
			case 'pt_PT'://Portugal
				$locale = new Locale(ILocale::GMT_TIME_PT_PT);
				break;
			case 'es_PR'://Puerto Rico
				$locale = new Locale(ILocale::GMT_TIME_ES_PR, true);
				break;
			case 'es_DO'://República Dominicana
				$locale = new Locale(ILocale::GMT_TIME_ES_DO, true);
				break;
			case 'ru_RU'://Russia
				$locale = new Locale(ILocale::GMT_TIME_RU_RU);
				break;
			case 'en_GB'://United Kingdom
				$locale = new Locale(ILocale::GMT_TIME_EN_GB);
				break;
			case 'en_US'://United States of America
				$locale = new Locale(ILocale::GMT_TIME_EN_US);
				break;
			case 'es_UY'://Uruguay
				$locale = new Locale(ILocale::GMT_TIME_ES_UY, true);
				break;
			case 'es_VE'://Venezuela
				$locale = new Locale(ILocale::GMT_TIME_ES_VE, true);
				break;
			default : //If the locale is not defined, then returning USA Locale
			    $locale = new Locale(ILocale::GMT_TIME_EN_US);
				break;
		}
		return $locale;
	}

}
?>
